#include "hal_entityKey.h"

#include "STC8G_H_GPIO.h"

// GPIO引脚重映射
#define ENTITYKEY_GPIO_PORT GPIO_P5
#define ENTITYKEY_GPIO_PIN GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4

static void GPIO_Config() {
    GPIO_InitTypeDef GPIO_InitStructure;         // 结构定义
    GPIO_InitStructure.Mode = GPIO_PullUp;       // 指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
    GPIO_InitStructure.Pin = ENTITYKEY_GPIO_PIN; // 指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7
    GPIO_Inilize(GPIO_P5, &GPIO_InitStructure);  // 初始化
}

void HAL_EntityKey_Init() {
    GPIO_Config();
}

/**
 * @brief 读取目标按键引脚状态
 * @param Num 按键编号从1开始
 * @return 按下返回0，抬起返回1，编号错误返回1
 */
unsigned char HAL_EntityKey_ReadPin(unsigned char Num) {
    if (Num >= 1 && Num <= Key_Sum) {
        switch (Num) {
        case 1:
            return KEY1;
            break;
        case 2:
            return KEY2;
            break;
        case 3:
            return KEY3;
            break;
        case 4:
            return KEY4;
            break;
        }
    }
    return 1;
}
